package com.turtle3d.turtle;

import java.util.Collection;

import javax.vecmath.Matrix4f;

/**
 * 3D Turtle interface
 * @author Marek Paterczyk <marek.paterczyk@gmail.com>
 *
 */
public interface Turtle3D {

	/**
	 * Move forward
	 * @param distance Distance to move, negative value means backwards
	 */
	public abstract void forward(float distance);

	/**
	 * Turn left/right
	 * @param angle Angle in degrees
	 */
	public abstract void turn(float angle);

	public abstract void roll(float angle);

	public abstract void pitch(float angle);

	public abstract void push();

	public abstract void pop();

	//public abstract Collection<Matrix4f> getHistory();

	public abstract Matrix4f getTransformMatrix();
	
	public abstract int getDepth();
	public abstract int getMaximalDepth();
	
	public abstract void transform(Matrix4f matrix);
	
	public abstract void scale(float x, float y, float z);

}